using System;
using System.Collections.Generic;
using System.Text;
using AntEater.ComponentModel.BuildElements;

namespace AntEater.Runtime.UI
{
    internal class BuildElementToolStripMenuItemData
    {

        /// <summary>
        /// Initializes a new instance of the <see cref="T:BuildElementToolStripMenuItemData"/> class.
        /// </summary>
        public BuildElementToolStripMenuItemData()
            :this(null,null,null){
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="T:BuildElementToolStripMenuItemData"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        public BuildElementToolStripMenuItemData(IContainerBuildElement container)
            :this(container,null,null){
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="T:BuildElementToolStripMenuItemData"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="referenceBuildElement">The reference build element.</param>
        public BuildElementToolStripMenuItemData(IContainerBuildElement container, IBuildElement referenceBuildElement)
            :this(container,referenceBuildElement,null){
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="T:BuildElementToolStripMenuItemData"/> class.
        /// </summary>
        /// <param name="container">The container.</param>
        /// <param name="referenceBuildElement">The reference build element.</param>
        /// <param name="buildElementType">Type of the build element.</param>
        public BuildElementToolStripMenuItemData(IContainerBuildElement container, IBuildElement referenceBuildElement, Type buildElementType) {
            this._container = container;
            this._referenceBuildElement = referenceBuildElement;
            this._buildElementType = buildElementType;
        }

        private IContainerBuildElement _container;

        /// <summary>
        /// Gets or sets the container.
        /// </summary>
        /// <value>The container.</value>
        public IContainerBuildElement Container {
            get { return _container; }
        }

        private IBuildElement _referenceBuildElement;

        /// <summary>
        /// Gets or sets the reference build element.
        /// </summary>
        /// <value>The reference build element.</value>
        public IBuildElement ReferenceBuildElement {
            get { return _referenceBuildElement; }
        }

        private Type _buildElementType;

        /// <summary>
        /// Gets or sets the type of the build element.
        /// </summary>
        /// <value>The type of the build element.</value>
        public Type BuildElementType {
            get { return _buildElementType; }
        }

    }
}
